package com.gitee.mrj.aiboot.annotation.config.sf.ui;

import com.gitee.mrj.aiboot.annotation.config.KV;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.TYPE})
@Documented
public @interface SFError {
    /**
     * 是否实时校验，默认：`true`
     * - `true` 每一次都校验
     * - `false` 提交时校验
     */
    boolean liveValidate() default true;

    /**
     * 自定义错误信息文本，键名赞同 `ErrorData.keyword` 值
     */
    KV[] errors() default {};

    /**
     * 是否立即呈现错误视觉，默认：`false`
     */
    boolean firstVisual() default false;

    /**
     * 是否只展示错误视觉不显示错误文本，默认：`false`
     */
    boolean onlyVisual() default false;

    /**
     * 是否忽略某些数据类型校验 `ERRORSDEFAULT`
     * - 值始终包含 `DelonSchemaFormConfig.ingoreKeywords`
     */
    String[] ingoreKeywords() default {};

    /**
     * 是否强制在标签上显示 `*` 来表示必填，一般在当使用自定义校验 `validator` 可能需要必填项处理
     */
    boolean showRequired() default false;
}
